// coupon/couCenter.js
const api = require("../request/api")
const request = require("../request/request")
const util = require("../utils/util")
const App = getApp()

Page({

    /**
     * 页面的初始数据
     */
    data: {
        barHeight: App.globalData.paddingTop,

        uid: '',
        couponOptions: [
        ],
        styledata: {
            "bg_color": "#3e8572",
            "color": "#000",
            "leftflag": true,
            "homeflag": true,
            "name": "领券中心"
        },

        // 已领取优惠券的id数组
        myCouponId: [],
        allCoupon: [],
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: async function (options) {
        this.setData({
            uid: App.globalData.uid
        })

        await this.getAllmyCoupon()
        await this.getAllCoupon()
    },


    // 请求所有已领取的优惠券
    async getAllmyCoupon() {
        let uid = this.data.uid
        if (uid === '') return
        let listRes = await request.post(api.myCouponList, { uid })
        // 不能用length判断，因为未领取过优惠券结果为null会报错，阻断后续代码执行
        if (!listRes) return

        let temARR = []
        listRes.forEach(item => {
            // 如果未领取或是已使用均可以执行领取操作
            if (temARR.includes(item.tid) || item.is_userd == 1) return
            temARR.push(item.tid)
        });
        this.setData({
            myCouponId: temARR
        })

        // console.log(this.data.myCouponId);
    },

    // 获取平台所有优惠券
    async getAllCoupon() {
        util.showLoading('正在刷新')
        let temList = await request.post(api.couponList, {})
        if (temList.length == 0) {
            let timerout = setTimeout(() => {
                wx.stopPullDownRefresh()
                util.hideLoading()
                clearTimeout(timerout)
            }, 1000);
            return
        }

        // 为每类优惠券添加是否已领取属性
        let hasCouId = this.data.myCouponId
        temList.forEach(item => {
            if (hasCouId.includes(item.id)) {
                item.isHaveThis = true
            } else {
                item.isHaveThis = false
            }
        });
        this.setData({
            allCoupon: temList
        })
        let timerout = setTimeout(() => {
            wx.stopPullDownRefresh()
            util.hideLoading()
            clearTimeout(timerout)
        }, 1000);
        // console.log(this.data.allCoupon);
    },



    // 点击领取优惠券
    async getCoupon(e) {
        let couId = e.currentTarget.dataset.couid
        let couIndex = e.currentTarget.dataset.couindex

        let uid = this.data.uid
        if (uid) {
            let params = { uid, id: couId }
            let couRes = await request.postall(api.getCoupon2, params)
            if (couRes.code != 0) {
                return util.showToast(couRes.msg)
            }

            // 利用下标修改对应的优惠券领取标识，必须这样写。修改单个性能会更好
            let update = `allCoupon[` + couIndex + `].isHaveThis`
            if (couRes) {
                this.setData({
                    [update]: true
                })
            }

        } else {
            let flag = await App.confirmLogin('优惠券需登录后才能领取')
            if (flag) {
                this.setData({
                    uid: App.globalData.uid || util.getAppValue('uid')
                })
                let params = { uid: this.data.uid, id: couId }
                let couRes = await request.post(api.getCoupon2, params)
                // console.log(couRes);

                // 利用下标修改对应的优惠券领取标识，必须这样写。修改单个性能会更好
                let update = `allCoupon[` + couIndex + `].isHaveThis`
                if (couRes) {
                    this.setData({
                        [update]: true
                    })
                }
            }
            // util.showToast('请登录后领取')
        }
    },

    // tab变更事件
    tabChange(e) {
        console.log('tab变更事件', e);
    },

    // 立即使用优惠券
    gotoUse(e) {
        let type = e.currentTarget.dataset.type
        let condition = e.currentTarget.dataset.condition
        let limitsum = e.currentTarget.dataset.limitsum
        // 产品券跳转
        if (type == 1) {
            // 指定多商品
            let idArr = condition.split(',')

            wx.navigateTo({
                url: `/pages/good/detail?id=${idArr[0]}`
            })
            return

            // idArr.forEach(async (idstr) => {
            //     let params = {
            //         id: idstr,
            //         uid: this.data.uid,
            //     }
            //     let res = await request.post(api.goods_details, params)

            //     if (limitsum <= res.sell_price) {
            //         wx.navigateTo({
            //             url: `/pages/good/detail?id=${idstr}`
            //         })
            //         return
            //     }
            // });

        } else {
            // 满减或无门槛
            // 后期可以滚动到首页指定的商品页距离
            App.globalData.fromCoupon = true
            wx.switchTab({
                url: `/pages/home/home`
            })
        }

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    async onPullDownRefresh() {
        this.setData({
            myCouponId: [],
            allCoupon: [],
        })
        await this.getAllmyCoupon()
        await this.getAllCoupon()
        // util.hideLoading()
    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})